package sv.com.bolsaTrabajo.view.bean.managedbeans;

import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.primefaces.context.RequestContext;
import sv.com.bolsaTrabajo.model.dao.TipoPagoFacade;
import sv.com.bolsaTrabajo.model.entities.TipoPago;
import sv.com.bolsaTrabajo.view.bean.ManejadorAccion;

/**
 *
 * @author Karina Palacios
 */
@ManagedBean
@SessionScoped
public final class TipoPagoMB extends ManejadorAccion {

    @EJB
    private TipoPagoFacade tipoPagoFacade;
    private TipoPago tipoPago;
    private List<TipoPago> tipoPagos;

    /**
     * Constructor
     */
    public TipoPagoMB() {
        limpiarTipoPago();
        tipoPago = new TipoPago();
    }

    public void limpiarTipoPago() {
        setTipoPago(new TipoPago());
    }

    public List<TipoPago> getTipoPagos() {
        tipoPagos = tipoPagoFacade.obtenerTodos();
        return tipoPagos;
    }

    public void guardarEntidad() {
        try {
            System.out.println("====> Ingresando a crear Tipo Pago");
            getTipoPago().setFechaMod(new Date());

            if (tipoPago.getIdTipoPago()== null) {
                tipoPagoFacade.crear(tipoPago);
                lanzarMensajeInformacion("Exito", "Tipo Pago guardada correctamente");
            } else {
                tipoPagoFacade.modificar(tipoPago);
                lanzarMensajeInformacion("Exito", "Tipo Pago modificada correctamente");
            }
            RequestContext.getCurrentInstance().update("IDFrmTipoPago");
            RequestContext.getCurrentInstance().execute("WVDialogTipoPago.hide();");
        } catch (Exception e) {
            lanzarMensajeError("", "Error al guardar Tipo Pago", e);
        }
    }

    public void modificarEntidad(TipoPago modPago) {
        try {
            this.tipoPago = modPago;
        } catch (Exception e) {
            lanzarMensajeError("Error al actualizar datos", "No se pueden asignar los valores para Tipo Pago", e);
        }
        RequestContext.getCurrentInstance().update("");
    }

    /**
     * ****************** Getters and Setter ********************
     */
    public TipoPagoFacade getTipoPagoFacade() {
        return tipoPagoFacade;
    }

    public void setTipoPagoFacade(TipoPagoFacade tipoPagoFacade) {
        this.tipoPagoFacade = tipoPagoFacade;
    }

    public TipoPago getTipoPago() {
        return tipoPago;
    }

    public void setTipoPago(TipoPago tipoPago) {
        this.tipoPago = tipoPago;
    }
}
